package com.niiwoo.civet.trade.service.intelligenceInvest;

import com.niiwoo.civet.trade.dto.request.ProjectInvestOrderPageRequest;
import com.niiwoo.civet.trade.dto.request.intelligenceInvest.IntelligenceDetailListRequestDTO;
import com.niiwoo.civet.trade.dto.request.intelligenceInvest.IntelligenceOrderDetailRequestDTO;
import com.niiwoo.civet.trade.dto.request.intelligenceInvest.IntelligenceOrderListRequestDTO;
import com.niiwoo.civet.trade.dto.response.InvestOrderMaxandMinDateResponseDTO;
import com.niiwoo.civet.trade.dto.response.ProjectInvestOrderPageResponse;
import com.niiwoo.civet.trade.dto.response.intelligenceInvest.IntelligenceDetailListResponseDTO;
import com.niiwoo.civet.trade.dto.response.intelligenceInvest.IntelligenceInvestOrderDTO;
import com.niiwoo.civet.trade.dto.response.intelligenceInvest.IntelligenceOrderDetailResponseDTO;
import com.niiwoo.civet.trade.dto.response.intelligenceInvest.ProjectPackageInvestOrderDTO;
import com.niiwoo.tripod.provider.dto.response.PageResponseDTO;

/**
 * Created by HuangMin on 2018/10/31.
 */
public interface IntelligenceOrderDubboService {

    /**
     * 智能投包订单列表
     * @param requestDTO 请求DTO
     * @return PageResponseDTO
     */
    PageResponseDTO<IntelligenceInvestOrderDTO> intelligenceOrderList(IntelligenceOrderListRequestDTO requestDTO);

    /**
     * 智能投包订单详情
     * @param requestDTO 请求DTO
     * @return IntelligenceOrderDetailResponseDTO
     */
    IntelligenceOrderDetailResponseDTO intelligenceOrderDetail(IntelligenceOrderDetailRequestDTO requestDTO);

    /**
     * 智能投包明细订单列表
     * @param requestDTO 请求DTO
     * @return PageResponseDTO<IntelligenceDetailListResponseDTO>
     */
    PageResponseDTO<IntelligenceDetailListResponseDTO> intelligenceDetailList(IntelligenceDetailListRequestDTO requestDTO);
    /**
     * 查询投资人记录
     * @param request
     * @return
     */
    ProjectInvestOrderPageResponse getPageIntelligenceInvestOrderList(ProjectInvestOrderPageRequest request);

    /**
     * 查询我的智能投订单的最大最小日期
     * @param userId 用户ID
     * @param type 投资类型
     * @return InvestOrderMaxandMinDateResponseDTO
     */
    InvestOrderMaxandMinDateResponseDTO getMyIntelligenceInvestOrderMaxAndMinDate(String userId, Byte type);
    
    /**
     * 通过子 订单ID获取智能投投资订单信息
     * @param subInvestId
     * @return
     */
   default  ProjectPackageInvestOrderDTO getProjectPackageInvestOrderBySubInvestOrderId(Long subInvestId) {
    	throw new UnsupportedOperationException("未实现的方法");
    }

}
